<html>
<head><meta charset="utf-8"><title>MIR lowering · t-compiler/wg-rfc-2229 · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/index.html">t-compiler/wg-rfc-2229</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html">MIR lowering</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="217588170"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217588170" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217588170">(Nov 23 2020 at 04:18)</a>:</h4>
<p>So the feature now works to some degree, but from the looks of it in cases like don't</p>
<div class="codehilite"><pre><span></span><code>let (_, a) = tuple;
</code></pre></div>
<p>The code expects to build tuple in its entirety (even though only a part of it is captured). Which makes sense because we do <a href="https://github.com/sexxi-goose/rust/blob/32da90b431919eedb3e281a91caea063ba4edb77/compiler/rustc_mir_build/src/build/matches/mod.rs#L445-L448">convert the initializer to place</a> when <a href="https://github.com/sexxi-goose/rust/blob/32da90b431919eedb3e281a91caea063ba4edb77/compiler/rustc_mir_build/src/build/block.rs#L132"><code>expr_into_pattern</code></a> is called.  </p>
<p>I think the issue got masked away by the bridge since we would end up capturing the whole variable if anything of it gets captured.</p>



<a name="217588339"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217588339" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217588339">(Nov 23 2020 at 04:23)</a>:</h4>
<hr>
<p>The testcases with .stderr files here pass: <a href="https://github.com/sexxi-goose/rust/pull/31/commits/c07d4d45e070998c53b1554bc8ca2a93b0e93ecc">https://github.com/sexxi-goose/rust/pull/31/commits/c07d4d45e070998c53b1554bc8ca2a93b0e93ecc</a></p>



<a name="217589042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217589042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217589042">(Nov 23 2020 at 04:40)</a>:</h4>
<hr>
<p>Also can you confirm the change here makes sense: <a href="https://github.com/sexxi-goose/rust/pull/31/commits/64bf0bb99f421ca92ce80031743d349356e63ab0#diff-596bb4000aae6e6b37927544992b2bdf7e7ac5bad13ea2becadb4cc2638fa2ac">https://github.com/sexxi-goose/rust/pull/31/commits/64bf0bb99f421ca92ce80031743d349356e63ab0#diff-596bb4000aae6e6b37927544992b2bdf7e7ac5bad13ea2becadb4cc2638fa2ac</a>? </p>
<p>My idea was that the i-th capture can be mutated if the root variable can be mutated</p>



<a name="217799936"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217799936" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217799936">(Nov 24 2020 at 19:09)</a>:</h4>
<p>Hmm so, I have to say, in some ways it might be <em>more</em> consistent to say that the right-hand-side of a <code>let</code> is <em>always</em> captured</p>



<a name="217799953"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217799953" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217799953">(Nov 24 2020 at 19:10)</a>:</h4>
<p>i.e., we said that <code>match a.b.c</code> always captures <code>a.b.c</code></p>



<a name="217799995"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217799995" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217799995">(Nov 24 2020 at 19:10)</a>:</h4>
<p>admittedly we filed an issue about it :)</p>



<a name="217800027"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217800027" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217800027">(Nov 24 2020 at 19:10)</a>:</h4>
<p>but it seems like a more consistent rule</p>



<a name="217800040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217800040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217800040">(Nov 24 2020 at 19:10)</a>:</h4>
<p>basically "pattern matching against something causes us to capture it"</p>



<a name="217800042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217800042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217800042">(Nov 24 2020 at 19:10)</a>:</h4>
<p>What do you think <span class="user-mention" data-user-id="281950">@Aman Arora</span> ?</p>



<a name="217800102"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217800102" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217800102">(Nov 24 2020 at 19:11)</a>:</h4>
<p>It kind of comes down to try match to what happens outside the context of closures. Assuming we can fix the wildcard problem, fixing match isn't going to be hard</p>



<a name="217800171"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217800171" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217800171">(Nov 24 2020 at 19:12)</a>:</h4>
<p>I left some details here: <a href="https://github.com/rust-lang/project-rfc-2229/issues/27">https://github.com/rust-lang/project-rfc-2229/issues/27</a></p>



<a name="217800889"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217800889" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217800889">(Nov 24 2020 at 19:17)</a>:</h4>
<p>Personally, I'd _like_ if we can get it to ignore those captures. Eg <a href="https://play.rust-lang.org/?version=stable&amp;mode=debug&amp;edition=2018&amp;gist=122a0431f22d6457d3f806c78be77d3e">this</a> would not work if we split the two tuple-struct patterns into two different closures.</p>



<a name="217803042"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217803042" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217803042">(Nov 24 2020 at 19:33)</a>:</h4>
<p>Do we want to stabilize the feature as it stands and assign the non-capture behavior around patterns as a  future improvement to the feature?</p>
<p>The reason, I ask this is I took a look at the MIR build and it feels like it might require a bit of rework, and then we can prioritize diagnostics and migration links. It's possible I might just be missing context/ just need to take a deeper dive, I haven't spent too much time looking through this yet. My idea was to use PlaceBuilder instead of Place for the most part. </p>
<p>Another question would be what's the feature release and edition release timeline? I.e. when do we cutoff stable for edition release and how long before that we want/need to stabilize the feature?</p>



<a name="217882043"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217882043" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217882043">(Nov 25 2020 at 13:11)</a>:</h4>
<p><span class="user-mention" data-user-id="281950">@Aman Arora</span> I think that I would want us to shoot for "end-to-end functional code" as quickly as possible, then address diagnostics / migration, and finally come back and address edge cases (though the last two can be done in parallel)</p>



<a name="217882168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217882168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217882168">(Nov 25 2020 at 13:12)</a>:</h4>
<p>I'm not sure yet how I feel about stabilizing -- once we do that, changing the set of things we capture is going to require further migration, though I think that we could probably get away with changes around 'the edges' of pattern matching and so forth without really affecting users in practice</p>



<a name="217882354"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217882354" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217882354">(Nov 25 2020 at 13:14)</a>:</h4>
<p><span class="user-mention silent" data-user-id="281950">Aman Arora</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/MIR.20lowering/near/217803042">said</a>:</p>
<blockquote>
<p>Another question would be what's the feature release and edition release timeline? I.e. when do we cutoff stable for edition release and how long before that we want/need to stabilize the feature?</p>
</blockquote>
<p>Yeah, I've been wondering about this. I don't think it's set in stone, it'll depend to some extent on our progress, but I definitely would like it if we had a usable feature on nightly by end of year (not sure if that's realistic, that's coming awfully close). That was my original goal though.</p>



<a name="217882540"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217882540" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217882540">(Nov 25 2020 at 13:16)</a>:</h4>
<p><span class="user-mention silent" data-user-id="281950">Aman Arora</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/MIR.20lowering/near/217800171">said</a>:</p>
<blockquote>
<p>I left some details here: <a href="https://github.com/rust-lang/project-rfc-2229/issues/27">https://github.com/rust-lang/project-rfc-2229/issues/27</a></p>
</blockquote>
<p>I just read your comments. Indeed I think that just removing that line is the fix for closures, more or less. The question that I still haven't fully 100% answered to my satisfaction is whether we need to tweak anything about match desugaring in MIR -- I have to go remember the scheme we used for fake reads and the like. But I imagine that based on our tests from borrow check it's just a matter of refactoring the code to use <code>PlaceBuilder</code></p>



<a name="217912447"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217912447" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217912447">(Nov 25 2020 at 17:06)</a>:</h4>
<p>So we have _something_ working.</p>
<p>From the small amount of testing so far nested closures and patterns are kind of what's not working. I suspect nested closure is going to be easy to fix, we just have some small error in our code.</p>



<a name="217912907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217912907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217912907">(Nov 25 2020 at 17:09)</a>:</h4>
<p>Another point around patters is if we take the approach of the current workaround to get disjoint capture</p>
<div class="codehilite" data-code-language="Rust"><pre><span></span><code><span class="kd">let</span><span class="w"> </span><span class="n">tup</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">....</span><span class="w"></span>

<span class="kd">let</span><span class="w"> </span><span class="n">alias</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&amp;</span><span class="n">tup</span><span class="p">.</span><span class="mi">0</span><span class="p">;</span><span class="w"></span>
<span class="kd">let</span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="o">=</span><span class="w">  </span><span class="o">||</span><span class="w"> </span><span class="c1">// some use of alias</span>
</code></pre></div>
<p>If we extend this approach to patterns we can see that tup needs to be aliased in entirety and therefore fully captured if we want to use it in patterns like  <code>let (_,_) = tup</code>  which would result in complete capture.</p>



<a name="217923523"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217923523" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217923523">(Nov 25 2020 at 18:42)</a>:</h4>
<p>I don't understand this final point, <span class="user-mention" data-user-id="281950">@Aman Arora</span></p>



<a name="217927101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217927101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217927101">(Nov 25 2020 at 19:15)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/MIR.20lowering/near/217923523">said</a>:</p>
<blockquote>
<p>I don't understand this final point, <span class="user-mention silent" data-user-id="281950">Aman Arora</span></p>
</blockquote>
<p>I guess my point was kind of around me being not completely against capturing the place being matched on/used in patterns. But it might have been me looking for a reason to make this easier, and probably should be ignored. </p>
<p>But essentially I was going along the lines oh how the desugaring is described <a href="https://github.com/rust-lang/rfcs/pull/2229#issuecomment-360901580">here</a> and how the new analysis instead of capturing upvars mentioned, captures paths mentioned. This implies that if a path is mentioned in a pattern/match expression then it should also be captured.</p>



<a name="217937272"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217937272" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217937272">(Nov 25 2020 at 20:46)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/MIR.20lowering/near/217882354">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="281950">Aman Arora</span> <a href="#narrow/stream/189812-t-compiler.2Fwg-rfc-2229/topic/MIR.20lowering/near/217803042">said</a>:</p>
<blockquote>
<p>Another question would be what's the feature release and edition release timeline? I.e. when do we cutoff stable for edition release and how long before that we want/need to stabilize the feature?</p>
</blockquote>
<p>Yeah, I've been wondering about this. I don't think it's set in stone, it'll depend to some extent on our progress, but I definitely would like it if we had a usable feature on nightly by end of year (not sure if that's realistic, that's coming awfully close). That was my original goal though.</p>
</blockquote>
<p>Also, how about we commit parts that are working assuming no effect on when the feature is not used so that we can have targetted fixes for broken parts of the feature? </p>
<p>The tests that pass are: </p>
<ul>
<li><a href="https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-struct.rs">https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-struct.rs</a></li>
<li><a href="https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple-mut.rs">https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple-mut.rs</a></li>
<li><a href="https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple.rs">https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/capture-disjoint-field-tuple.rs</a></li>
<li><a href="https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/filter-on-struct-member.rs">https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/filter-on-struct-member.rs</a></li>
<li><a href="https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-1.rs">https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-1.rs</a></li>
<li><a href="https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-2.rs">https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/multilevel-path-2.rs</a></li>
<li><a href="https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/simple-struct-min-capture.rs">https://github.com/sexxi-goose/rust/blob/51ad9c5fd2728b9c49ba0223a4184c9c5571ca89/src/test/ui/closures/2229_closure_analysis/run_pass/simple-struct-min-capture.rs</a></li>
</ul>



<a name="217937728"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217937728" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217937728">(Nov 25 2020 at 20:51)</a>:</h4>
<p>(two of them might need some fixing the comments)</p>



<a name="217951228"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217951228" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217951228">(Nov 25 2020 at 23:32)</a>:</h4>
<p>Nested closure works too, only patterns is left</p>



<a name="217961002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/189812-t-compiler/wg-rfc-2229/topic/MIR%20lowering/near/217961002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Aman Arora <a href="https://rust-lang.github.io/zulip_archive/stream/189812-t-compiler/wg-rfc-2229/topic/MIR.20lowering.html#217961002">(Nov 26 2020 at 02:52)</a>:</h4>
<p>(wasn't really a nested closure issue)</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>